#ifndef __LCD_INIT_H
#define __LCD_INIT_H
#include "typedef.h"
#include "stdint.h"

/*********************************************屏幕显示宏定义开始**********************************************/

/*定义屏幕的显示方式， 可以根据设置不同的数值来控制屏幕的显示方式*/
// #define USE_HORIZONTAL 0 /*竖屏*/
// #define USE_HORIZONTAL 1 /*竖屏*/
// #define USE_HORIZONTAL 2 /*横屏*/
#define USE_HORIZONTAL 3 /*横屏*/

#if USE_HORIZONTAL == 0 || USE_HORIZONTAL == 1
#define LCD_W 320
#define LCD_H 480

#else
#define LCD_W 480
#define LCD_H 320
#endif

/*********************************************屏幕显示宏定义结束********************************************/
/*-------------------------------------------------------------------------------------------------------*/
/*********************************************屏幕驱动函数开始**********************************************/

/**
 * @brief 初始化屏幕
 * @return void
 */
void LCD_GPIO_Init(void);

/**
 * @brief spi 写入数据
 * @param dat unsigned char 要写入的数据
 * @return void
 */
void LCD_Writ_Bus(uint8_t dat);

/**
 * @brief 写入一个字节数据
 * @param dat unsigned charf
 * @return void
 */
void LCD_WR_DATA8(uint8_t dat);

/**
 * @brief 写入三个字节数据
 * @param dat unsigned int data
 * @return void
 */
void LCD_WR_DATA(uint32_t dat);

/**
 * @brief 写入指令
 *
 * @param dat unsigned char 指令
 */
void LCD_WR_REG(uint8_t dat);

/**
 * @brief 设置坐标函数
 *
 * @param x1 起始X1
 * @param y1 起始y1
 * @param x2 结束x2
 * @param y2 结束y2
 * @return void
 */
void LCD_Address_Set(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);

/**
 * @brief 初始化LCD
 * @return void
 */
void LCD_Init(void);

/*********************************************屏幕驱动函数结束**********************************************/
#endif
